วิธีการเข้าถึง Bucket จาก Instance ใน Amazon Lightsail
สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ
ครั้งนี้จะมาแนะนำวิธีการเข้าถึง Bucket จาก Instance ใน Amazon Lightsail
สิ่งที่ต้องมี
※1. เปิดใช้งาน WordPress ด้วย Amazon Lightsail แล้ว
ครั้งนี้เราจะดำเนินการโดยใช้สภาพแวดล้อม WordPress (สามารถใช้ในสภาพแวดล้อมอื่นๆ ได้ด้วย)
ดูตัวอย่างการเปิดใช้งาน Application ได้ที่ลิงก์ด้านล่างนี้
※2. สร้าง Bucket และอัปโหลดไฟล์ HTML ลงใน Object list และเผยแพร่เว็บไซต์แบบ Static ด้วย Lightsail Bucket แล้ว
ดูตัวอย่างได้ที่ลิงก์ด้านล่างนี้
การตั้งค่า Resource access
เราจะทำการแนบ(Attach) Instance กับ Bucket นี้เพื่อให้สามารถเข้าถึงกันได้โดยไม่ต้องจัดการ credentials
กลับไปที่หน้าแรกของ Amazon Lightsail โดยคลิกแท็บ Home
ด้านบนซ้าย แล้วเลือกแท็บ Storage
คลิกเข้าไปที่ Buckets ของเรา
แล้วเลือกแท็บ Permissions
เลื่อนลงมาด้านล่างที่หัวข้อ Resource access แล้วคลิก Attach instance
แล้วเลือก Instance ที่ต้องการแนบ ครั้งนี้คือ tinnakorn-wordpress
แล้วคลิก Attach ✅
เพียงเท่านี้การตั้งค่าการเข้าถึง Bucket จาก Lightsail Instance ก็เสร็จเรียบร้อยแล้ว
ต่อไปจะเป็นการใช้คำสั่ง AWS CLI S3 เพื่อทดสอบการเข้าถึง Bucket จาก Lightsail Instance
การใช้คำสั่ง AWS CLI S3 ใน Linux
ก่อนเริ่มใช้คำสั่ง AWS CLI S3 ให้เราเชื่อมต่อเข้าไปใน Linux ของ Instance โดยเข้าไปหน้า Instance ของเรา
แล้วคลิก Connect using SSH
ในหัวข้อ Connect to your instance ในแท็บ Connect (หากเชื่อมต่อกับ Instance อยู่แล้ว ให้ข้ามขั้นตอนนี้ไปได้เลย)
รันคำสั่งของ AWS CLI S3 เพื่อตรวจสอบข้อมูลใน Bucket ตามด้านล่างนี้
aws s3 ls
คือคำสั่งของ AWS CLI S3
s3://bucket-name
คือชื่อ Bucket ที่เราสร้างไว้ก่อนหน้านี้ (ต้องใส่ s3://
ข้างหน้าชื่อ Bucket) ครั้งนี้คือ s3://tinnakorn-bucket
aws s3 ls s3://bucket-name
ผลลัพธ์: จะเห็นว่ามีไฟล์ test.html
ที่เราอัปโหลดลงไปยัง Object list
tinnakorn-wordpress - Terminal | Lightsail - Google Chrome
bitnami@ip-xxx-xx-xx-xxx:~$ aws s3 ls s3://tinnakorn-bucket
2023-02-08 09:42:22 30 test.html
bitnami@ip-xxx-xx-xx-xxx:~$
ต่อไปเราจะทำการคัดลอกไฟล์ test.html จาก Bucket ไปยัง Instance โดยรันคำสั่งตามนี้
aws s3 cp s3://bucket-name/test.html ./
ผลลัพธ์: ถ้าแสดงแบบนี้ถือว่า download ไฟล์ test.html มายัง Instance สำเร็จ
tinnakorn-wordpress - Terminal | Lightsail - Google Chrome
bitnami@ip-xxx-xx-xx-xxx:~$ aws s3 cp s3://tinnakorn-bucket/test.html ./
download: s3://tinnakorn-bucket/test.html to ./test.html
bitnami@ip-xxx-xx-xx-xxx:~$
แล้วรันคำสั่ง ls
เพื่อตรวจสอบไฟล์ test.html ที่คัดลอกจาก Bucket มายัง Instance
จะเห็นว่าไฟล์ test.html
แสดงอยู่ที่นี่
tinnakorn-wordpress - Terminal | Lightsail - Google Chrome
bitnami@ip-xxx-xx-xx-xxx:~$ ls
bitnami_application_password bitnami_credentials htdocs stack test.html
bitnami@ip-xxx-xx-xx-xxx:~$
ต่อไปจะทำการอัปโหลดไฟล์จาก Instance ไปยัง Bucket
ก่อนอื่นเราต้องสร้างไฟล์ใน Instance ก่อน ครั้งนี้จะสร้างไฟล์ test2.html
โดยรันคำสั่งตามนี้
nano test2.html
เมื่อเข้ามาแล้วให้ป้อนเนื้อหาลงในไฟล์ test2.html ครั้งนี้จะป้อนโค้ด HTML ตามด้านล่างนี้
แล้วให้ Save โดยกดปุ่ม Ctrl+X
ตามด้วยกดปุ่ม Y
เพื่อ Save แล้วกดปุ่ม Enter
<html><body>test2</body></html>
ต่อไปเราจะทำการคัดลอกไฟล์ test2.html จาก Instance ไปยัง Bucket โดยรันคำสั่งตามนี้
aws s3 cp ./test2.html s3://tinnakorn-bucket/
ผลลัพธ์: ถ้าแสดงแบบนี้ถือว่า upload ไฟล์ test2.html ไปยัง Bucket สำเร็จ
tinnakorn-wordpress - Terminal | Lightsail - Google Chrome
bitnami@ip-xxx-xx-xx-xxx:~$ aws s3 cp ./test2.html s3://tinnakorn-bucket/
upload: ./test2.html to s3://tinnakorn-bucket/test2.html
bitnami@ip-xxx-xx-xx-xxx:~$
แล้วกลับมาที่หน้าจอ Bucket ของเราโดยคลิก Home
ที่แท็บด้านบนซ้าย แล้วเลือกแท็บ Storage
คลิกเข้าไปที่ Buckets ของเรา
แล้วเลือกแท็บ Objects
แล้วคลิก Refresh
ก็จะเห็นไฟล์ test2.html
แสดงอยู่ที่นี่
สรุป
หากต้องการเข้าถึง Bucket จาก Lightsail Instance เราต้องแนบ(Attach) Instance กับ Bucket เข้าด้วยกันก่อน แล้ว Instance กับ Bucket จึงจะสามารถเข้าถึงกันได้ นอกจากนี้เรายังสามารถใช้คำสั่ง AWS CLI S3 ในการถ่ายโอนข้อมูลต่างๆโดย Upload และ Download ข้อมูลระหว่าง S3 กับ Lightsail Instance ได้อีกด้วย
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ
POP จากบริษัท Classmethod (Thailand) ครับ !